testsuite: Fix builder test on Windows/MSVC
authorChun-wei Fan <fanchunwei@src.gnome.org>
Tue, 1 Aug 2017 08:57:11 +0000 (16:57 +0800)
committerChun-wei Fan <fanchunwei@src.gnome.org>
Fri, 15 Sep 2017 13:41:15 +0000 (21:41 +0800)
Visual Studio does not support things like -Wl,export-dynamic, so we
need to export those symbols by using __declspec(dllexport).  So, we
decorate these with macros which we define accordingly for this purpose.

https://bugzilla.gnome.org/show_bug.cgi?id=785210

testsuite/gtk/builder.c
testsuite/gtk/meson.build

index cd48b370a035b21988fd5a07457f40d947f663d9..372bb15e1aca3cdf2907c393809350b19b81b8e0 100644 (file)
 #include <gtk/gtk.h>
 #include <gdk/gdkkeysyms.h>
 
+#ifdef G_OS_WIN32
+# define _BUILDER_TEST_EXPORT __declspec(dllexport)
+#else
+# define _BUILDER_TEST_EXPORT
+#endif
+
 /* exported for GtkBuilder */
-void signal_normal (GtkWindow *window, GParamSpec *spec);
-void signal_after (GtkWindow *window, GParamSpec *spec);
-void signal_object (GtkButton *button, GParamSpec *spec);
-void signal_object_after (GtkButton *button, GParamSpec *spec);
-void signal_first (GtkButton *button, GParamSpec *spec);
-void signal_second (GtkButton *button, GParamSpec *spec);
-void signal_extra (GtkButton *button, GParamSpec *spec);
-void signal_extra2 (GtkButton *button, GParamSpec *spec);
+_BUILDER_TEST_EXPORT void signal_normal (GtkWindow *window, GParamSpec *spec);
+_BUILDER_TEST_EXPORT void signal_after (GtkWindow *window, GParamSpec *spec);
+_BUILDER_TEST_EXPORT void signal_object (GtkButton *button, GParamSpec *spec);
+_BUILDER_TEST_EXPORT void signal_object_after (GtkButton *button, GParamSpec *spec);
+_BUILDER_TEST_EXPORT void signal_first (GtkButton *button, GParamSpec *spec);
+_BUILDER_TEST_EXPORT void signal_second (GtkButton *button, GParamSpec *spec);
+_BUILDER_TEST_EXPORT void signal_extra (GtkButton *button, GParamSpec *spec);
+_BUILDER_TEST_EXPORT void signal_extra2 (GtkButton *button, GParamSpec *spec);
 
 
 static GtkBuilder *
@@ -2335,13 +2341,13 @@ test_level_bar (void)
 
 static GObject *external_object = NULL, *external_object_swapped = NULL;
 
-void
+_BUILDER_TEST_EXPORT void
 on_button_clicked (GtkButton *button, GObject *data)
 {
   external_object = data;
 }
 
-void
+_BUILDER_TEST_EXPORT void
 on_button_clicked_swapped (GObject *data, GtkButton *button)
 {
   external_object_swapped = data;
@@ -2559,7 +2565,7 @@ test_template ()
   g_assert (GTK_IS_LABEL (my_gtk_grid->priv->label));
 }
 
-void
+_BUILDER_TEST_EXPORT void
 on_cellrenderertoggle1_toggled (GtkCellRendererToggle *cell)
 {
 }
index 56236134755e33fbaddbb8f01a840fdaf3a8ff8b..5c6e885a0faf7833851a8cc6d60bd43b42fa78ad 100644 (file)
@@ -1,9 +1,15 @@
+gtk_tests_export_dynamic_ldflag = []
+
+if cc.get_id() != 'msvc'
+  gtk_tests_export_dynamic_ldflag = ['-Wl,--export-dynamic']
+endif
+
 tests = [
   ['accel'],
   ['accessible'],
   ['adjustment'],
   ['bitmask', ['../../gtk/gtkallocatedbitmask.c'], ['-DGTK_COMPILATION', '-UG_ENABLE_DEBUG']],
-  ['builder', [], [], ['-Wl,--export-dynamic']],
+  ['builder', [], [], gtk_tests_export_dynamic_ldflag],
   ['builderparser'],
   ['cellarea'],
   ['check-icon-names'],